package com.easondongh.system.service;

import com.easondongh.system.domain.SysMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.easondongh.system.vo.MenuTreeNode;

import java.util.List;

/**
 * @author EasonDongH
 * @date 2020/4/28 13:14
 */
public interface SysMenuService extends IService<SysMenu>{

    /**
     * 查询所有的SysMenu项，并封装为List<MenuTreeNode>
     * @return
     */
    List<MenuTreeNode> queryAllMenuTreeNode();

    /**
     * 根据user的权限查询并构造List<MenuTreeNode>
     * @param id
     * @return
     */
    List<MenuTreeNode> queryMenuTreeNodeByUserId(Integer id);

    /**
     * 直接查询菜单列表，界面通过id、pid来渲染数学菜单
     * @return
     */
    List<SysMenu> loadMenuList();

    /**
     * 获取当前菜单的最大排序号
     * @return
     */
    Integer getMaxOrderNum();

    /**
     * 排除id = #{id} 及 其所有子节点、孙子节点等
     * @param id
     * @return
     */
    List<SysMenu> getMenuExcludeById(Integer id);

    /**
     * 统计该id下的子菜单数量
     * @param id
     * @return
     */
    Integer countChildMenuById(Integer id);
}
